package framework;

/**
 * This class defines a state calculator. The methods allow the user to be
 * flexible in what kind of state calculator they wish to implement.
 * 
 * @author jtumarki, ntibrewa, shuaihan, wesleyk
 * 
 */
public interface StateCalculator {

	/**
	 * This function allows the user to calculate the next state for a given
	 * cell at position (currX, currY) on board b. Since there are multiple ways
	 * to calculate the next state of a cell, we leave the decision to the user
	 * to decide how the next state for a cell is to be calculated
	 * 
	 * @param currX
	 *            the x position of cell on b
	 * @param currY
	 *            y position of cell on b
	 * @param b
	 *            board that simulation is being run on
	 * @return the new state for that cell
	 */
	public State getNextState(int currX, int currY, Board b);
}
